package br.com.werp.regras.tesouraria.visao.decorador;

import java.util.HashMap;
import java.util.Map;

import org.displaytag.decorator.TableDecorator;

import br.com.werp.regras.geral.Debuger;
import br.com.werp.regras.geral.ErroPadrao;
import br.com.werp.regras.geral.helpers.PessoaHelper;
import br.com.werp.regras.geral.util.Constantes;
import br.com.werp.regras.geral.util.FormatDate;
import br.com.werp.regras.geral.util.Html;
import br.com.werp.regras.geral.util.Util;
import br.com.werp.regras.geral.vos.documento.DocumentoFinanceiroVO;
import br.com.werp.regras.geral.vos.documento.DocumentoVencimentoVO;
import br.com.werp.regras.geral.vos.tabelas.Pessoa;
import br.com.werp.regras.tesouraria.controle.ControleDocumento;
import br.com.werp.regras.tesouraria.controle.ControleVencimentos;


/**
 * @author Sobreira
 * Criado em 18/11/2004
 *
 */
public class Vencimentos extends TableDecorator {
    protected ControleVencimentos controleVencimentos = new ControleVencimentos();
    protected ControleDocumento controleDocumento = new ControleDocumento();

    public String getNumero() {
        DocumentoVencimentoVO vencimentoVO =
            (DocumentoVencimentoVO) getCurrentRowObject();

        String retorno = "";
        int docm_id = 0;

        try {
            DocumentoFinanceiroVO documentoFinanceiroVO =
                controleDocumento.obterDocumentoFinanceiroVOAgrupador(vencimentoVO.getDocm_id());
            retorno = documentoFinanceiroVO.getDcfi_numero_emissor();
            docm_id = documentoFinanceiroVO.getDocm_id();
            if (Util.isNullOrEmpty(retorno)){
                retorno = " --- ";
            }
        } catch (Exception e) {
            Debuger.debugar(e, getClass());
        }

        Map map = new HashMap();
        map.put("docIdBanco", new Integer(docm_id));
        map.put("carregar_action", "");

        return Html.href("../Documentos/DocumentoFinanceiroForm.do", map,
            "_BLANK", retorno) + retorno + "</a>";
    }

    public String getPessoa() {
        DocumentoVencimentoVO vencimentoVO =
            (DocumentoVencimentoVO) getCurrentRowObject();
        String retorno = "";

        try {
            Pessoa pessoa =
                PessoaHelper.obterPessoa(vencimentoVO.getDocm_pessoa());
            retorno = pessoa.getPess_nome();
        } catch (Exception e) {
            Debuger.debugar(e, getClass());
        }

        return retorno;
    }

    public String getId() {
        DocumentoVencimentoVO vencimentoVO =
            (DocumentoVencimentoVO) getCurrentRowObject();

        return "<input type=\"checkbox\" name=\"vencimentos\" " +
        "Class=\"baseField\" " + "value=\"" + vencimentoVO.getId() + "\">";
    }

    public String getDcve_data() {
        DocumentoVencimentoVO vencimentoVO =
            (DocumentoVencimentoVO) getCurrentRowObject();

        return FormatDate.format(vencimentoVO.getDcve_data(),
            Constantes.DATA_FORMATO);
    }

    public String getDcve_valor() {
        DocumentoVencimentoVO vencimentoVO =
            (DocumentoVencimentoVO) getCurrentRowObject();

        return "R$" + vencimentoVO.getDcve_valor();
    }

    public String getValor_pago() {
        DocumentoVencimentoVO vencimentoVO =
            (DocumentoVencimentoVO) getCurrentRowObject();

        try {
            controleVencimentos.verificarVencimentoPagos(vencimentoVO);
        } catch (ErroPadrao e) {
            Debuger.debugar(e, getClass());
        }

        return "R$" + vencimentoVO.getValor_pago();
    }

    public String getValor_pagar() {
        DocumentoVencimentoVO vencimentoVO =
            (DocumentoVencimentoVO) getCurrentRowObject();

        try {
            controleVencimentos.verificarVencimentoPagos(vencimentoVO);
        } catch (ErroPadrao e) {
            Debuger.debugar(e, getClass());
        }

        return "R$" +
        (vencimentoVO.getDcve_valor() - vencimentoVO.getValor_pago());
    }
}
